import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';

// Configuration
import { AppConfigModule } from './config/config.module';

// Services
import { DatabaseService } from './services/database.service';
import { HeliusService } from './services/helius.service';
import { TokenService } from './services/token.service';
import { PrettyAddressService } from './services/pretty-address.service';
import { BondingCurveService } from './services/bonding-curve.service';
import { TransactionService } from './services/transaction.service';
import { XLayerService } from './services/xlayer.service';
import { BSCService } from './services/bsc.service';
import { XLayerContractHelper } from './contracts/xlayer-contract';

// Controllers
import { TokenController } from './controllers/token.controller';
import { HealthController } from './controllers/health.controller';
import { PrettyAddressController } from './controllers/pretty-address.controller';
import { UploadController } from './api/upload.controller';
import { BondingCurveController } from './controllers/bonding-curve.controller';
import { XLayerController } from './controllers/xlayer.controller';
import { BSCController } from './controllers/bsc.controller';

// Gateways
import { RealtimeGateway } from './gateways/realtime.gateway';
import { TokenChatGateway } from './gateways/token-chat.gateway';

// Modules
// import { XLayerModuleNew } from './modules/xlayer-new.module';

@Module({
  imports: [AppConfigModule],
  controllers: [
    AppController,
    TokenController,
    HealthController,
    PrettyAddressController,
    UploadController,
    BondingCurveController,
    XLayerController,
    BSCController,
  ],
  providers: [
    AppService,
    DatabaseService,
    HeliusService,
    TokenService,
    PrettyAddressService,
    BondingCurveService,
    TransactionService,
    XLayerService,
    BSCService,
  XLayerContractHelper,
    RealtimeGateway,
    TokenChatGateway,
  ],
})
export class AppModule {}
